package modelo;

import interfaz.VLogin;
import java.sql.SQLException;
import java.util.Hashtable;
import java.util.Vector;

import datos.CentroBD;

public class CentroEstudios {
	
	private static CentroBD bd = new CentroBD();
	
	public static Hashtable<String, Usuario> hUsuarios = new Hashtable<String, Usuario>();
	public Vector<Aula> vAulas = new Vector<Aula>();
	public Vector<Equipo> vEquipos = new Vector<Equipo>();
	public Vector<TipoHard> vTipoHards = new Vector<TipoHard>();
	public Vector<Hardware> vHardwares = new Vector<Hardware>();
	public Vector<Software> vSoftwares = new Vector<Software>();
	public Vector<Solicitud> vSolicitudes = new Vector<Solicitud>();
	public Usuario usuario;
	
	public CentroEstudios(){
		
	}

	public static void main(String[] args){
		CentroEstudios centroEstudios = new CentroEstudios();
		try {
			bd.abrirConexionSinODBC("//localhost/CENTROESTUDIOS", 2, "root", "050588");
			VLogin vLogin = new VLogin(centroEstudios);
			vLogin.setVisible(true);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			bd.cerrarConexion();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			bd.cerrarConexion();
		}
	}
	
	public Usuario comprobarUsuario(String idUsuario, String password){
		try {
			hUsuarios = bd.obtenerUsuarios();
			Usuario usu = hUsuarios.get(idUsuario);
			if (usu.getPassword().equals(password)){
				usuario = usu;
				return usu;
			}
		}catch (SQLException e){
			return null;
		}catch (Exception ex){
			return null;
		}
		return null;
	}
	
	public void cargarUsuarios() throws SQLException{
		hUsuarios = bd.obtenerUsuarios();
	}
	
	public void crearUsuario(Usuario usuario) throws SQLException{
		bd.crearUsuario(usuario);
		cargarUsuarios();
	}
	
	public void cargarAulas() throws SQLException{
		vAulas = bd.obtenerAulas();
	}
	
	public void crearAula(Aula aula) throws SQLException{
		bd.crearAula(aula);
		cargarAulas();
	}
	
	public void modificarAula(Aula aula) throws SQLException{
		bd.modificarAula(aula);
		cargarAulas();
	}
	
	public void cargarEquipos() throws SQLException{
		vEquipos = bd.obtenerEquipos();
	}
	
	public void crearEquipo(Equipo equipo) throws SQLException{
		bd.crearEquipo(equipo);
		cargarEquipos();
	}
	
	public void modificarEquipo(Equipo equipo) throws SQLException{
		bd.modificarEquipo(equipo);
		cargarEquipos();
	}
	
	public void crearHardware(Hardware hardware) throws SQLException{
		bd.crearHardware(hardware);
		cargarHardware();
	}
	
	public void borrarHardware(Hardware hardware) throws SQLException{
		bd.borrarHardware(hardware);
		cargarHardware();
	}
	
	public void cargarHardware() throws SQLException{
		vHardwares = bd.obtenerHardware();
	}
	
	public void crearSoftware(Software software) throws SQLException{
		bd.crearSoftware(software);
		cargarSoftware();
	}
	
	public void borrarSoftware(Software software) throws SQLException{
		bd.borrarSoftware(software);
		cargarSoftware();
	}
	
	public void cargarSoftware () throws SQLException{
		vSoftwares = bd.obtenerSoftware();
	}
	
	public void crearSolicitud(Solicitud sol) throws SQLException{
		bd.crearSolicitud(sol);
		cargarSolicitud();
	}
	
	public void cargarSolicitud() throws SQLException{
		vSolicitudes = bd.obtenerSolicitudes();
	}
	
	public void realizarSolicitud(Solicitud sol) throws SQLException{
		bd.atenderSolicitud(sol);
		cargarSolicitud();
	}
	
	public int generarCodigo(String tabla) throws SQLException{
		int ultimoReg = bd.ultimoRegistro(tabla);
		System.out.println("Ultimo registro de la tabla "+tabla+" es: "+ ultimoReg);
		return ultimoReg+1;
	}
	
	public void cargarTiposHard() throws SQLException{
		vTipoHards = bd.obtenerTiposHardware();
	}
	
	public void cerrarConexion(){
		bd.cerrarConexion();
	}
}
